{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Working with jobs\n", "\n", "The job class obtained after running a QuantumCircuit has interesting properties that can be used." ] }, { "cell_type": "code", "execution_count": 10, "outputs": [], "source": [ "import os\n", "from c12_callisto_clients.user_configs import UserConfigs\n", "from c12_callisto_clients.qiskit.c12sim_provider import C12SimProvider\n", "from qiskit import QuantumCircuit" ], "metadata": { "collapsed": false, "ExecuteTime": { "end_time": "2024-10-08T14:47:38.763647Z", "start_time": "2024-10-08T14:47:38.760435Z" } } }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false, "ExecuteTime": { "end_time": "2024-10-08T14:41:33.856585Z", "start_time": "2024-10-08T14:41:33.531695Z" } }, "outputs": [ { "data": { "text/plain": " ┌───┐ \nq_0: ┤ H ├──■──\n └───┘┌─┴─┐\nq_1: ─────┤ X ├\n └───┘", "text/html": "
     ┌───┐     \nq_0: ┤ H ├──■──\n     └───┘┌─┴─┐\nq_1: ─────┤ X ├\n          └───┘
" }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "\n", "TOKEN = os.getenv(\"C12_TOKEN\")\n", "configs = UserConfigs.parse_obj({\"token\" : TOKEN})\n", "c12_simulator_provider = C12SimProvider(configs)\n", "c12_simulator_backend = c12_simulator_provider.get_backend('c12sim-iswap')\n", "circuit = QuantumCircuit(2)\n", "circuit.h(0)\n", "circuit.cx(0, 1)\n", "\n", "circuit.draw()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Two main methods available for each Job instance are job_id() and status().\n", "\n", "1. `job_id()` method returns the unique identifier of a job as a UUID4 string (a universally unique identifier (UUID), version 4, is a 36-character alphanumeric random generated string). This id can be used for later assessment of the job properties.\n", "\n", "2. `status()` method is used to get the status of a job execution as an instance of JobStatus class. Available statuses are:\n", " - `QUEUED` = Job is queued. It waits for execution\n", " - `RUNNING` = Job is currently running.\n", " - `CANCELLED` = Job has been canceled.\n", " - `DONE` = Job has been successfully done.\n", " - `ERROR` = There has been an error during the execution of a job.\n", "\n", "The status of a running job can be changed depending on the current state of job execution.\n" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false, "ExecuteTime": { "end_time": "2024-10-08T14:34:27.494363Z", "start_time": "2024-10-08T14:34:27.074318Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Job id: 25f3fecf-f0b2-4f03-bf4c-bbf35234c1e9\n", "Status: JobStatus.RUNNING\n" ] } ], "source": [ "c12_job = c12_simulator_backend.run(circuit)\n", "\n", "print(f\"Job id: {c12_job.job_id()}\") # Get a job UUID\n", "print(f\"Status: {c12_job.status()}\") # Get a current job status" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The result of a job execution can be obtained with the `result()` method. This method can have one optional argument (timeout). The `timeout` argument specifies how long the method will wait for the execution of the task. If the time limit is exceeded, the `C12SimJobError` exception is raised. If we do not specify this argument, its default value is None, meaning the method will block until the simulation is finished.\n", "\n", "Another way to get the results is to check the job status periodically until it is `DONE` and then call the `result()` function." ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false, "ExecuteTime": { "end_time": "2024-10-08T14:35:18.370737Z", "start_time": "2024-10-08T14:34:31.252430Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "25f3fecf-f0b2-4f03-bf4c-bbf35234c1e9: JobStatus.RUNNING\n", "25f3fecf-f0b2-4f03-bf4c-bbf35234c1e9: JobStatus.RUNNING\n", "25f3fecf-f0b2-4f03-bf4c-bbf35234c1e9: JobStatus.RUNNING\n", "25f3fecf-f0b2-4f03-bf4c-bbf35234c1e9: JobStatus.RUNNING\n", "25f3fecf-f0b2-4f03-bf4c-bbf35234c1e9: JobStatus.RUNNING\n", "25f3fecf-f0b2-4f03-bf4c-bbf35234c1e9: JobStatus.RUNNING\n", "25f3fecf-f0b2-4f03-bf4c-bbf35234c1e9: JobStatus.RUNNING\n", "25f3fecf-f0b2-4f03-bf4c-bbf35234c1e9: JobStatus.RUNNING\n", "25f3fecf-f0b2-4f03-bf4c-bbf35234c1e9: JobStatus.RUNNING\n", "25f3fecf-f0b2-4f03-bf4c-bbf35234c1e9: JobStatus.DONE\n", "{'00': 507, '01': 2, '10': 1, '11': 514}\n" ] } ], "source": [ "from qiskit.providers import JobStatus\n", "import time\n", "job_final_states = [JobStatus.DONE, JobStatus.ERROR, JobStatus.CANCELLED]\n", "c12_job_id = c12_job.job_id()\n", "while True:\n", " job_status = c12_job.status()\n", " print(f'{c12_job_id}: {job_status}')\n", " if job_status in job_final_states:\n", " break\n", " time.sleep(5) # Wait 5 s\n", "\n", "if c12_job.status() == JobStatus.DONE:\n", " c12_result = c12_job.result()\n", " print(c12_result.get_counts())" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false, "ExecuteTime": { "end_time": "2024-10-08T14:36:16.544056Z", "start_time": "2024-10-08T14:35:23.888714Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'00': 514, '11': 510}\n" ] } ], "source": [ "# Running a job that will block until finished\n", "c12_job = c12_simulator_backend.run(circuit)\n", "c12_result = c12_job.result()\n", "if c12_job.status() == JobStatus.DONE:\n", " print(c12_result.get_counts())" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false, "ExecuteTime": { "end_time": "2024-10-08T14:37:07.957500Z", "start_time": "2024-10-08T14:36:51.562765Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Timeout!\n", " Last status: JobStatus.RUNNING\n" ] } ], "source": [ "# Getting a job result with a timeout argument specified\n", "from c12_callisto_clients.qiskit.exceptions import C12SimJobError\n", "c12_job = c12_simulator_backend.run(circuit)\n", "\n", "try:\n", " c12_result = c12_job.result(timeout=15) # it will raise a C12SimJobError as it won't be finished in 15s\n", "except C12SimJobError:\n", " print(\"Timeout!\")\n", " print(f\" Last status: {c12_job.status()}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Getting previous jobs\n", "\n", "Next, an extremely useful functionality is the possibility to obtain all jobs run on the system by a specific user. Using this functionality, the user can get the results of old jobs.\n", "\n", "This can be achieved by calling the `jobs()` function on the backend instance. This function accepts two arguments: `limit` and `offset`. We can specify how many jobs we want to get with a `limit` argument. Likewise, we can set the `offset` from the first job with an offset argument. With these arguments, pagination is easily achieved." ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false, "ExecuteTime": { "end_time": "2024-10-08T14:41:49.808817Z", "start_time": "2024-10-08T14:41:47.513320Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1: 8f1a598d-5efa-46df-89f5-fc4c69e38d46 Status: JobStatus.DONE\n", "2: 46b62950-e1a3-4750-a8e1-75d738fe4d07 Status: JobStatus.DONE\n", "3: 84af6995-ff3d-459f-ab9c-89fa90603f43 Status: JobStatus.DONE\n", "4: ca23490d-c820-4529-abd2-801cf313eaf8 Status: JobStatus.DONE\n", "5: 4e8ec2e8-1d16-4bd4-a87c-8bc8c9ea7420 Status: JobStatus.DONE\n", "6: d609a2d1-de33-48ea-adfc-c4b4d0e1afd9 Status: JobStatus.DONE\n", "7: ff507df5-65ff-410f-a20e-b4e86726dab8 Status: JobStatus.DONE\n", "8: d79259bd-3304-41e2-98e8-3a1794cf6dff Status: JobStatus.DONE\n", "9: 9bf33018-e427-4ae6-a4e8-698a21ab60b3 Status: JobStatus.DONE\n", "10: dd2ae9e8-6e0c-4a1f-b753-da651d6a4011 Status: JobStatus.DONE\n" ] } ], "source": [ "number_of_records = 10\n", "offset = 10\n", "counter = 1\n", "\n", "jobs = c12_simulator_backend.jobs(number_of_records, offset)\n", "\n", "for job in jobs:\n", " print(f\"{counter}: {job.job_id()} Status: {job.status()}\")\n", " counter += 1\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For each job, it is possible to get the circuit sent to the simulator for execution. But, it is even possible to get the transpiled version of this circuit to see what the circuit has been run after the transpilation process." ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false, "ExecuteTime": { "end_time": "2024-10-08T14:41:54.385726Z", "start_time": "2024-10-08T14:41:53.280808Z" } }, "outputs": [ { "data": { "text/plain": "
", "image/png": "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" }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Also it is possible to retrieve the circuit that has been run for specific job\n", "first_job = jobs[1]\n", "first_job_qasm = first_job.get_qasm() # Get OpenQASM string\n", "first_job_circuit = first_job.get_circuit()\n", "first_job_circuit.draw('mpl')" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false, "ExecuteTime": { "end_time": "2024-10-08T14:41:59.871822Z", "start_time": "2024-10-08T14:41:59.597393Z" } }, "outputs": [ { "data": { "text/plain": "
", "image/png": "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" }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Getting the transpiled circuit\n", "# NOTICE: It can be possible that due to a bug in Qiskit's transpile function some circuits are wrongly converted to QASM string\n", "\n", "first_job_transpiled_qasm = first_job.get_qasm(transpiled=True) # Get transpiled OpenQASM string\n", "first_job_transpiled_circuit = first_job.get_circuit(transpiled=True)\n", "first_job_transpiled_circuit.draw('mpl')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Query job by UUID\n", "\n", "Jobs can be searched by their UUID using the `get_job()` method." ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false, "ExecuteTime": { "end_time": "2024-10-08T14:42:05.419756Z", "start_time": "2024-10-08T14:42:05.071350Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Job id : 46b62950-e1a3-4750-a8e1-75d738fe4d07 JobStatus.DONE\n" ] } ], "source": [ "# Jobs can be queried by theirs UUID\n", "job_uuid = first_job.job_id()\n", "search_job = c12_simulator_backend.get_job(job_uuid)\n", "\n", "print(f\"Job id : {search_job.job_id()} {search_job.status()}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Running multiple jobs at once\n", "\n", "The `run()` method of the backend class can also accept the list of QuantumCircuit. This can be an essential feature as it allows a user to run multiple circuits simultaneously and get an array of job instances as a result." ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false, "ExecuteTime": { "end_time": "2024-10-08T14:43:07.287968Z", "start_time": "2024-10-08T14:42:08.293932Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Job id: 15367226-5967-4231-93bd-e81df7da8c40 - > JobStatus.RUNNING\n", "Job id: 4b93f8c1-7e9b-4053-98bc-a0948b59c39d - > JobStatus.QUEUED\n", "[-7.07350024e-01+5.77469756e-05j 5.75368866e-05+2.69994702e-04j\n", " 5.74994563e-05+2.15881814e-04j -7.06863360e-01-5.72895393e-05j]\n", "[ 5.00172138e-01-4.08332894e-05j -4.06847340e-05-1.90915138e-04j\n", " -4.06582668e-05-1.52651537e-04j 4.99828015e-01+4.05098330e-05j\n", " -5.00171860e-01+4.08332667e-05j 4.06847114e-05+1.90915032e-04j\n", " 4.06582441e-05+1.52651452e-04j -4.99827736e-01-4.05098104e-05j]\n" ] } ], "source": [ "# Array where the circuits will be stored\n", "circuits_to_run = []\n", "\n", "# Creating the circuits\n", "circuit_1 = QuantumCircuit(2)\n", "circuit_1.h(0)\n", "circuit_1.cx(0, 1)\n", "\n", "circuit_2 = QuantumCircuit(3)\n", "circuit_2.h(0)\n", "circuit_2.cx(0, 1)\n", "circuit_2.x(2)\n", "circuit_2.h(2)\n", "\n", "circuits_to_run.append(circuit_1)\n", "circuits_to_run.append(circuit_2)\n", "\n", "# Running the jobs\n", "c12_jobs = c12_simulator_backend.run(circuits_to_run)\n", "\n", "# Printing the UUID of the jobs\n", "for job in c12_jobs:\n", " print(f\"Job id: {job.job_id()} - > {job.status()}\")\n", "\n", "# Waiting for the results\n", "for job in c12_jobs:\n", " result = job.result()\n", " print(result.get_statevector())" ] }, { "cell_type": "code", "execution_count": null, "outputs": [], "source": [], "metadata": { "collapsed": false } } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.13" } }, "nbformat": 4, "nbformat_minor": 4 }